package cn.geekyspace.scanhive.common.ui;

import javafx.scene.control.Alert;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;

import java.util.Objects;

@Slf4j
@UtilityClass
public class UIAlertUtils {

    /** 显示信息提示框（蓝色图标） */
    public static void info(String title, String message) {
        showAlert(Alert.AlertType.INFORMATION, title, null, message);
    }

    /** 显示警告提示框（黄色图标） */
    public static void warn(String title, String message) {
        showAlert(Alert.AlertType.WARNING, title, null, message);
    }

    /** 显示错误提示框（红色图标） */
    public static void error(String title, String message) {
        showAlert(Alert.AlertType.ERROR, title, null, message);
    }

    /**
     * 显示确认提示框（带确认/取消按钮）
     */
    public static void confirm(String title, String message) {
        showAlert(Alert.AlertType.CONFIRMATION, title, null, message);
    }

    /**
     * 通用弹窗方法，供内部调用
     *
     * @param type    弹窗类型（信息、警告、错误、确认）
     * @param title   弹窗标题
     * @param header  弹窗头部文字（可以为 null）
     * @param message 弹窗内容
     */
    private static void showAlert(Alert.AlertType type, String title, String header, String message) {
        Alert alert = new Alert(type);
        alert.setTitle(title);
        alert.setHeaderText(header);
        alert.setContentText(message);
        // 加载 CSS
        String cssPath = Objects.requireNonNull(UIAlertUtils.class.getResource("/css/alert.css")).toExternalForm();
        alert.getDialogPane().getStylesheets().add(cssPath);
        // 显示
        alert.showAndWait();
    }
}
